21346
22277
Chcę usunąć oddział zarówno lokalnie, jak i zdalnie.
Nieudane próby usunięcia zdalnego oddziału
$ git branch -d remotes / origin / bugfix
błąd: nie znaleziono gałęzi 'remotes / origin / bugfix'.
$ git branch -d origin / bugfix
błąd: nie znaleziono gałęzi „origin / bugfix”.
$ git branch -rd origin / bugfix
Usunięto źródło / poprawkę błędu zdalnego oddziału (poprzednio 2a14ef7).
$ git push
Wszystko aktualne
$ git pull
Z github.com:gituser/gitproject
* [nowa gałąź] bugfix -> origin / bugfix
Już na bieżąco.
Co powinienem zrobić inaczej, aby pomyślnie usunąć gałąź zdalne / origin / bugfix zarówno lokalnie, jak i zdalnie? 
1
2
Kolejny
Streszczenie dla kierownictwa
$ git push -d  
$ git branch -d 
Zauważ, że w większości przypadków zdalna nazwa to źródło.
W takim przypadku będziesz musiał użyć polecenia w ten sposób.
$ git push -d origin 
Usuń oddział lokalny
Aby usunąć oddział lokalny, użyj jednej z następujących czynności:
$ git branch -d nazwa_gałęzi
$ git branch -D nazwa_gałęzi
Uwaga: Opcja -d jest aliasem dla --delete, które usuwa gałąź tylko wtedy, gdy została już w pełni scalona w gałęzi nadrzędnej. Możesz także użyć -D, które jest aliasem dla --delete --force, które usuwa gałąź „niezależnie od jej statusu scalenia”. [Źródło: man git-branch]
Zauważ również, że polecenie git branch -d nazwa_gałęzi zakończy się niepowodzeniem, jeśli aktualnie jesteś
w gałęzi, którą chcesz usunąć. Wiadomość zaczyna się od
błąd: nie można usunąć gałęzi „nazwa_gałęzi”. Jeśli tak, najpierw przełącz
do innej gałęzi, na przykład: git checkout master.
Usuń oddział zdalny [zaktualizowano w dniu 8 września 2017 r.]
Począwszy od Git v1.7.0, możesz usunąć zdalną gałąź za pomocą
$ git push  --delete 
co może być łatwiejsze do zapamiętania niż
$ git push : 
który został dodany w Git v1.5.0 „w celu usunięcia zdalnej gałęzi lub tagu”.
Począwszy od Git v2.8.0, możesz także użyć git push z opcją -d jako aliasu dla --delete.
Dlatego wersja Gita, którą zainstalowałeś, będzie decydować o tym, czy musisz użyć łatwiejszej, czy trudniejszej składni.
Usuń oddział zdalny [Oryginalna odpowiedź z 5 stycznia 2010 r.]
Z rozdziału 3 Pro Git autorstwa Scotta Chacona:
Usuwanie oddziałów zdalnych
Załóżmy, że skończyłeś ze zdalną gałęzią - powiedzmy, że ty i twoi współpracownicy ukończyliście pracę z funkcją i scaliliście ją z odgałęzieniem głównym zdalnego (lub inną gałęzią, w której znajduje się stabilna linia kodu). Możesz usunąć zdalną gałąź, używając raczej zawiłej składni git push [nazwa zdalnego repozytorium]: [gałąź]. Jeśli chcesz usunąć gałąź naprawy serwera z serwera, wykonaj następujące czynności:
Źródło wypychania $ git: serverfix
Do git@github.com: schacon / simplegit.git
- [usunięto] serverfix
Bum. Nigdy więcej oddziałów na Twoim serwerze. Możesz przejrzeć tę stronę, ponieważ będziesz potrzebować tego polecenia i prawdopodobnie zapomnisz składni. Sposobem na zapamiętanie tej komendy jest przywołanie składni git push [nazwa zdalnego serwera] [localbranch]: [remotebranch], którą omówiliśmy nieco wcześniej. Jeśli pominiesz część [localbranch], w zasadzie mówisz: „Nie bierz niczego po mojej stronie i uczyń z tego [odległego odgałęzienia]”.
Wydałem źródło git push: bugfix i działało pięknie. Scott Chacon miał rację - będę chciał przejrzeć tę stronę (lub praktycznie psie ucho, odpowiadając na to w Stack Overflow).
Następnie powinieneś wykonać to na innych komputerach
# Pobierz zmiany ze wszystkich pilotów i usuń lokalnie
# zdalnie usunięte gałęzie / tagi itp
# --prune wykona zadanie: -;
git fetch --all --prune
propagować zmiany.
|
Odpowiedź Matthew świetnie nadaje się do usuwania odległych gałęzi i doceniam również wyjaśnienie, ale aby dokonać prostego rozróżnienia między tymi dwoma poleceniami:
Aby usunąć lokalny oddział z komputera:
git branch -d {the_local_branch} (zamiast tego użyj -D, aby wymusić usunięcie gałęzi bez sprawdzania statusu scalenia)
Aby usunąć zdalną gałąź z serwera:
git push origin --delete {the_remote_branch}
Odniesienie: Git: Usuń gałąź (lokalną lub zdalną)
|
Krótkie odpowiedzi
Jeśli chcesz uzyskać bardziej szczegółowe wyjaśnienia dotyczące poniższych poleceń, zapoznaj się z długimi odpowiedziami w następnej sekcji.
Usuwanie zdalnego oddziału
git push origin --delete  # Git w wersji 1.7.0 lub nowszej
git push origin -d  # Krótsza wersja (Git 1.7.0 lub nowsza)
git push origin:  # Wersje Git starsze niż 1.7.0
Usuwanie lokalnego oddziału
git branch --delete 
git branch -d  # Krótsza wersja
git branch -D  # Wymuś usunięcie niepołączonych gałęzi
Usuwanie lokalnego oddziału zdalnego śledzenia
git branch --delete --remotes  / 
git branch -dr  /  # Shorter
git fetch  --prune # Usuń wiele przestarzałych gałęzi zdalnego śledzenia
git fetch  -p # Krótszy
Długa odpowiedź: istnieją trzy różne gałęzie do usunięcia!
Kiedy masz do czynienia z usuwaniem oddziałów zarówno lokalnie, jak i zdalnie, pamiętaj, że w grę wchodzą trzy różne gałęzie:
Oddział lokalny X.
Zdalna gałąź pochodzenia X.
Lokalne źródło / X gałęzi zdalnego śledzenia, które śledzi zdalną gałąź X.
Wykorzystano oryginalny plakat:
git branch -rd origin / bugfix
Który tylko usunął jego lokalną gałąź zdalnego śledzenia pochodzenia / poprawkę błędu, a nie rzeczywistą poprawkę błędu zdalnego oddziału na początku.
Aby usunąć ten faktyczny oddział zdalny, potrzebujesz
git push origin --delete bugfix
Dodatkowe Szczegóły
W poniższych sekcjach opisano dodatkowe szczegóły, które należy wziąć pod uwagę podczas usuwania oddziałów zdalnego i zdalnego śledzenia.
Pchnięcie w celu usunięcia gałęzi zdalnych usuwa również gałęzie ze zdalnym śledzeniem
Zauważ, że usunięcie zdalnej gałęzi X z wiersza poleceńużycie git push usunie również lokalną gałąź zdalnego śledzenia / X, więc nie jest konieczne wycinanie przestarzałej gałęzi zdalnego śledzenia za pomocą git fetch --prune lub git fetch -p. Jednak nie zaszkodzi, jeśli i tak to zrobisz.
Możesz sprawdzić, czy gałąź pochodzenia / X zdalnego śledzenia również została usunięta, uruchamiając następujące polecenie:
# Zobacz tylko gałęzie ze zdalnym śledzeniem
git branch --remotes
git branch -r
# Zobacz zarówno ściśle lokalne, jak i zdalne gałęzie śledzenia
git branch - all
git branch -a
Przycinanie przestarzałego lokalnego pochodzenia gałęzi zdalnego śledzenia / X
Jeśli nie usunąłeś zdalnej gałęzi X z wiersza poleceń (jak powyżej), to lokalne repozytorium nadal będzie zawierało (teraz przestarzałą) gałąź pochodzenia zdalnego śledzenia / X. Może się tak zdarzyć, jeśli na przykład usunąłeś zdalną gałąź bezpośrednio przez interfejs sieciowy GitHub.
Typowym sposobem usunięcia tych przestarzałych gałęzi zdalnego śledzenia (od wersji Git 1.6.6) jest po prostu uruchomienie git fetch z opcją --prune lub krótszą -p. Zauważ, że to usuwa wszystkie przestarzałe lokalne gałęzie zdalnego śledzenia dla wszelkich zdalnych gałęzi, które już nie istnieją na zdalnym:
git fetch origin --prune
git fetch origin -p # Krótszy
Oto odpowiedni cytat z informacji o wersji 1.6.6 (wyróżnienie moje):
„git fetch” nauczył się --all i --multipleoptions, z których można uruchomić pobieranie
wiele repozytoriów oraz opcja --prune do usuwania zdalnego śledzenia
gałęzie, które zestarzały się. Tworzą one „git remote update” i „git
zdalne przycinanie „mniej potrzebne (nie ma planu usuwania” zdalne
aktualizacja „ani„ zdalna śliwka ”).
Alternatywa dla powyższego automatycznego przycinania dla przestarzałych gałęzi zdalnego śledzenia
Alternatywnie, zamiast przycinania przestarzałych lokalnych gałęzi zdalnego śledzenia za pomocą git fetch -p, możesz uniknąć wykonywania dodatkowych operacji sieciowych, po prostu ręcznie usuwając gałęzie z flagami --remote lub -r:
git branch --delete --remotes origin / X
git branch -dr origin / X # Shorter
Zobacz też
git-branch (1) Strona podręcznika.
git-fetch (1) Strona podręcznika.
Pro Git § 3.5 Rozgałęzianie Git - Oddziały zdalne.
|
Kroki do usunięcia oddziału:
Aby usunąć zdalną gałąź:
git push origin --delete 
Istnieją trzy sposoby usunięcia lokalnego oddziału:
1: git branch -D 
2: git branch --delete --force  # To samo co -D
3: git branch --delete  # Błąd podczas usuwania połączenia
Wyjaśnij: OK, po prostu wyjaśnij, co się tutaj dzieje!
Po prostu zrób git push origin --delete, aby usunąć tylko zdalną gałąź, dodaj nazwę gałęzi na końcu, a to usunie ją i wypchnie do zdalnego w tym samym czasie ...
Ponadto, git branch -D, które po prostu usuwa tylko lokalną gałąź! ...
-D oznacza --delete --force, które usunie gałąź, nawet jeśli nie jest scalona (wymuś usunięcie), ale możesz również użyć -d, co oznacza --delete, które generuje błąd odpowiadający statusowi scalania gałęzi ...
Tworzę również poniższy obrazek, aby pokazać kroki:
|
Możesz również użyć następujących poleceń, aby usunąć zdalną gałąź
git push --delete pochodzenia serverfix
Który robi to samo co
git push origin: serverfix
ale może być łatwiejsze do zapamiętania.
|
Wskazówka: kiedy usuwasz gałęzie za pomocą
git branch -d  # Usuwa lokalny oddział
lub
git push origin:  # Usuwa zdalną gałąź
usuwane są tylko odniesienia. Mimo że gałąź jest faktycznie usuwana z pilota, odniesienia do niej nadal istnieją w lokalnych repozytoriach członków zespołu. Oznacza to, że dla innych członków zespołu usunięte gałęzie są nadal widoczne, gdy wykonują git branch -a.
Aby rozwiązać ten problem, członkowie Twojego zespołu mogą przycinać usunięte gałęzie za pomocą
git remote prune 
Zwykle jest to źródło pochodzenia śliwek zdalnych.
|
Jeśli chcesz usunąć oddział, najpierw przejdź do oddziału innego niż oddział, który ma zostać usunięty.
git checkout other_than_branch_to_be_deleted
Usuwanie lokalnego oddziału:
git branch -D branch_to_be_deleted
Usuwanie zdalnego oddziału:
git push origin --delete branch_to_be_deleted
|
git branch -D 
git branch -D -r origin / 
git push origin: 
|
To proste: po prostu uruchom następujące polecenie:
Aby usunąć gałąź Git zarówno lokalnie, jak i zdalnie, najpierw usuń gałąź lokalną za pomocą tego polecenia:
przykład git branch -d
(Tutaj przykładem jest nazwa oddziału).
A następnie usuń zdalną gałąź za pomocą tego polecenia:
git push origin: przykład
|
To jest bardzo proste:
Aby usunąć zdalną gałąź
git push -d origin 
Lub
git push origin: 
Aby wymusić usunięcie lokalnego oddziału
git branch -D 
|
Inne podejście to:
git push --prune pochodzenie
OSTRZEŻENIE: Spowoduje to usunięcie wszystkich zdalnych gałęzi, które nie istnieją lokalnie. Lub bardziej kompleksowo,
git push --mirror
skutecznie sprawi, że zdalne repozytorium będzie wyglądało jak lokalna kopia repozytorium (lokalne głowice, piloty i tagi są dublowane na zdalnym).
|
Używam następujących ustawień w moich ustawieniach Bash:
alias git-shoot = "git pushpochodzenie - usuń "
Następnie możesz zadzwonić:
git-shoot nazwa gałęzi
|
Usuń lokalnie:
Aby usunąć oddział lokalny, możesz użyć:
git branch -d 
Aby wymusić usunięcie gałęzi, użyj -D zamiast -d.
git branch -D 
Usuń zdalnie:
Istnieją dwie możliwości:
git push origin: nazwa gałęzi
git push origin --delete nazwa gałęzi
Sugerowałbym skorzystanie z drugiego sposobu, ponieważ jest bardziej intuicyjny.
|
Od stycznia 2013 r. GitHub zawiera przycisk Usuń gałąź obok każdej gałęzi na stronie „Oddziały”.
Odpowiedni wpis na blogu: Twórz i usuwaj gałęzie
|
Jeśli chcesz wykonać oba te kroki za pomocą jednego polecenia, możesz utworzyć dla niego alias, dodając poniższy plik do pliku ~ / .gitconfig:
[Alias]
rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f"
Alternatywnie możesz dodać to do swojej konfiguracji globalnej z wiersza poleceń za pomocą
git config --global alias.rmbranch \
'! f () {git branch -d $ {1} && git push origin --delete $ {1}; };fa'
UWAGA: Jeśli używasz -d (małe litery d), gałąź zostanie usunięta tylko wtedy, gdy została scalona. Aby wymusić usunięcie, będziesz musiał użyć -D (wielka litera D).
|
Aby usunąć swój oddział lokalnie i zdalnie
Checkout to master branch - git checkout master
Usuń zdalną gałąź - git push origin --delete 
Usuń swój lokalny oddział - git branch --delete 
|
Możesz to również zrobić za pomocą git remote prune origin
$ git zdalne pochodzenie śliwek
Przycinanie pochodzenia
URL: git@example.com/yourrepo.git
* [przycięte] pochodzenie / niektóre gałęzie
Przycina i usuwa gałęzie ze zdalnym śledzeniem z listy git branch -r.
|
Oprócz innych odpowiedzi często korzystam z narzędzia git_remote_branch. Jest to dodatkowa instalacja, ale zapewnia wygodny sposób interakcji ze zdalnymi oddziałami. W takim przypadku, aby usunąć:
grb usuń gałąź
Zauważyłem, że dość często korzystam z poleceń publikowania i śledzenia.
|
Jednowierszowe polecenie do usuwania zarówno lokalnego, jak i zdalnego:
D = nazwa gałęzi; git branch -D $ D; git push origin: $ D
Lub dodaj poniższy alias do swojego ~ / .gitconfig. Użycie: git kill nazwa-gałęzi
[Alias]
kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f"
|
Usuwanie oddziałów
Załóżmy, że nasza praca na gałęzi "formularz kontaktowy" jest zakończona i już zintegrowaliśmy go z "master". Ponieważ już go nie potrzebujemy, możemy go usunąć (lokalnie):
$ git branch -d contact-form
Aby usunąć zdalną gałąź:
git push origin --delete contact-form
|
Usuń oddział zdalny
git push origin: 
Usuń oddział lokalny
git branch -D 
Usuń kroki lokalnego oddziału:
kasy do innego oddziału
usuń oddział lokalny
|
Po prostu powiedz:
git branch -d 
git push origin: 
|
git push origin --delete 
jest łatwiejszy do zapamiętania niż
git push origin: branchName
|
Teraz możesz to zrobić za pomocą aplikacji GitHub Desktop.
Po uruchomieniu aplikacji
Kliknij projekt zawierający gałąź
Przejdź do oddziału, który chcesz usunąć
Z menu „Oddział” wybierz „Cofnij publikację ...”, aby usunąć gałąź z serwerów GitHub.
Z menu „Oddział” wybierz „Usuń” nazwa_gałęzi ”...”, aby usunąć gałąź z komputera lokalnego (czyli komputera, na którym aktualnie pracujesz)
|
Aby usunąć lokalnie - (normalne)
git branch -d my_branch
Jeśli twoja gałąź jest w trakcie ponownego bazowania / scalania i nie zostało to zrobione poprawnie, oznacza to, że pojawi się błąd, trwa rebase / scalanie, więc w takim przypadku nie będziesz mógł usunąć swojej gałęzi.
Więc albo musisz rozwiązać zmianę bazy / scalanie. W przeciwnym razie możesz wymusić usunięcie za pomocą,
git branch -D my_branch
Aby usunąć zdalnie:
git push --delete origin my_branch
Możesz zrobić to samo, używając:
git push origin: my_branch # Łatwe do zapamiętania oba zrobią to samo.
Reprezentacja graficzna:
|
To nie zadziała, jeśli masz tag o tej samej nazwie co gałąź na pilocie:
$ git push origin: nazwa-gałęzi lub tagu
błąd: dst refspec nazwa-rozgałęzienia lub znacznika pasuje do więcej niż jednego.
błąd: nie udało się przesłać niektórych odnośników do „git@github.com: SomeName / some-repo.git”
W takim przypadku musisz określić, że chcesz usunąć gałąź, a nie tag:
git push origin: refs / heads / branch-or-tag-name
Podobnie, aby usunąć tag zamiast gałęzi, którego użyłbyś:
git push origin: refs / tags / branch-or-tag-name
|
Wiele innych odpowiedzi prowadzi do błędów / ostrzeżeń. To podejście jest stosunkowo głupie, chociaż nadal możesz potrzebować git branch -D branch_to_delete, jeśli nie jest na przykład w pełni scalony z jakimś_ innym_branchem.
git checkout some_other_branch
git push origin: branch_to_delete
git branch -d branch_to_delete
Zdalne czyszczenie nie jest potrzebne, jeśli usunąłeś zdalną gałąź. Służy tylko do uzyskiwania najbardziej aktualnych pilotów dostępnych w śledzonym repozytorium. Zauważyłem, że git fetch doda piloty, a nie je usunie. Oto przykład, kiedy git remote prune origin faktycznie coś zrobi:
Użytkownik Awykonuje powyższe kroki. Użytkownik B uruchomiłby następujące polecenia, aby zobaczyć najbardziej aktualne gałęzie zdalne:
git fetch
git remote prune pochodzenie
git branch -r
|
Mam dość szukania w Google tej odpowiedzi, więc przyjąłem podobne podejście do odpowiedzi, którą crizCraig opublikował wcześniej.
Dodałem do mojego profilu Bash:
function gitdelete () {
git push origin --delete $ 1
git branch -D $ 1
}
Następnie za każdym razem, gdy skończę z gałęzią (na przykład scaloną w master), uruchamiam następujące polecenie w moim terminalu:
gitdelete nazwa-oddziału
... który następnie usuwa nazwę my-branch z pochodzenia, jak również lokalnie.
|
Przed wykonaniem
git branch --delete 
upewnij się, że najpierw określisz dokładną nazwę zdalnego oddziału, wykonując:
git ls-remote
Dzięki temu dowiesz się, co dokładnie wpisać dla wartości . (w gałęzi jest rozróżniana wielkość liter!)
|
Posługiwać się:
git push origin: bugfix # Usuwa zdalną gałąź
git branch -d bugfix # Należy ręcznie usunąć oddział lokalny
Jeśli jesteś pewien, że chcesz go usunąć, uruchom
git branch -D bugfix
Teraz, aby wyczyścić usunięte zdalne gałęzie, uruchom
git remote prune pochodzenie
|
1
2
Kolejny
Bardzo aktywne pytanie. Zdobądź 10 punktów reputacji, aby odpowiedzieć na to pytanie. Wymóg dotyczący reputacji pomaga chronić to pytanie przed spamem i brakiem odpowiedzi.
Nie szukasz odpowiedzi? Przeglądaj inne pytania oznaczone tagiem git kontrola wersji git-branch git-push git-remote lub zadaj własne pytanie.